package day12;

//volatile原子性
public class Demo2 implements Runnable{
    volatile int count;//模拟购买商品的数量
    public void run() {
        for (int i = 0; i < 1000; i++) {
            //volatile不能保证类似于下面的复合操作都成功 都失败
            //但是它可以保证属性单个操作 是原子性 所以它不能保证线程安全
            //通常可以通过synchronized同步锁保证安全
            synchronized (this){
                count++; //包含：读取count 计算count+1 赋值count
            }
            //count = 100; 属于一次操作
            System.out.println("购买的商品数量是："+count);
        }
    }
    public static void main(String[] args) {
        Demo2 d = new Demo2();
        for (int i = 0; i < 1000; i++) {
            new Thread(d).start();
        }
    }
}
